<?php
/**
 * Zead
 *
 * LICENSE	
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://www.opensource.org/licenses/bsd-license.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to eu@marcelomx.com so we can send you a copy immediately.
 *
 * @category   Zead
 * @author     Marcelo Rodrigues Gonzaga <eu@marcelomx.com>
 * @copyright  Copyright (c) 2008 Marcelo Rodrigues Gonzaga
 * @link       http://code.google.com/p/zead 
 * @license    http://www.opensource.org/licenses/bsd-license.php     New BSD License
 *
 **/


/** @see Zead_Html_Helper_Abstract **/
require_once 'Zead/Html/Helper/Abstract.php';

/** @see Zead_Uri **/
require_once 'Zead/Uri.php';

/**
 * @category   Zead
 * @package    Zead_Html
 * @subpackage Zead_Html_Helper
 * @copyright  Copyright (c) 2008 Marcelo Rodrigues Gonzaga 
 * @license    http://www.opensource.org/licenses/bsd-license.php     New BSD License  
 */
class Zead_Html_Helper_LinkPath extends Zead_Html_Helper_Abstract 
{
	/**
	 * Executando o helper. Como os atributos podem ser variados e ser uma ordem
	 * de obrigatoriedade e com diferentes funções assumidas, então os atributos
	 * podem ser passados em qualquer ordem.
	 *
	 * @param array $attributes
	 */
	public function linkPath($basePath, $domain = null, $tags = array()) 
	{
		// Selectores padraum		
		$selectors = array(
			'a'      => 'href',
			'link'   => 'href',
			'script' => 'src',
			'img'    => 'src',
			'table'  => 'background',
			'tr'     => 'background',
			'td'     => 'background',
			'form'   => 'action'
		);
		
		if ($host != null) {
			$host = parse_url($host);
		}
		
		// Aplicando a formatacao aos seletores
		foreach ($selectors as $selector => $attribute) {
			foreach ($this->html->documentElement->select($selector) as $element) {				
				if (!$element->hasAttribute($attribute))
					continue;
					
				$href = $element->getAttribute($attribute);
				
				if ($href == '#')
					continue;
					
				if (preg_match("/^\#(.*?)$/ie", $href))
					continue;
				
				if (preg_match("/^(http|https|file|ftp|mailto|javascript):(\/\/)?/ie", $href))
					continue;
					
				$uri = new Zead_Uri($href);
				$uri->resolve($basePath);
				$element->setAttribute($attribute, $uri->getUri());
			}
		}
	}
}

